1. Technical Field
The present invention relates to removing locks in a concurrent program, and more particularly, to removing locks from a concurrent program in manner that preserves the behaviors of the concurrent program.
2. Description of the Related Art
A concurrent program is comprised of several threads that are executed in parallel. These types of programs are behaviorally complex due to the fact that the threads of such programs execute in a noncontiguous or interleaved fashion. The noncontiguous or interleaved nature of a concurrent program makes it extremely difficult to identify or determine all the possible ways in which threads interact among themselves.
In view of the aforementioned difficulties, programmers often take an overprotective stance when creating concurrent programs. More specifically, programmers will tend to label large sections of code as critical sections to ensure that there is mutual exclusion with respect to shared objects, variables, etc. As a result, a concurrent program may include more locks than is necessary. The inclusion of these additional or superfluous locks may degrade the performance of the program and tends to make program analysis difficult.